# 此示例示意 用 python 结合pymysql 模块，
# 操作数据
# 此示例用于创建数据库的表格

# 操作 MariaDB数据库的步骤
# 0. 导入pymysql 模块
# 1. 连接数据库
# 2. 创建一个数据库的游标cursor, 用游标可以执行SQL 语句
# 3. 用游标 写入SQL 语句
# 4. 执行游标中的SQL 语句并提交
# 5. 如果操作完毕，关闭游标和数据连接


# 0. 导入pymysql 模块
import pymysql

# 1. 连接数据库
conn = pymysql.connect(
    host='localhost',  # MariaDB数据库主机的位置
    # port=3306,     # MariaDB数据库的端口号
    user='root',  # MariaDB数据库的用户名
    password='tedu.cn',  # 密码
    db='nsd2105',  # 数据库名
    charset='utf8'  # 制定操作的字符集
)

# 2. 创建一个数据库的游标cursor, 用游标可以执行SQL 语句
cursor = conn.cursor()

# 3. 用游标 写入SQL 语句
# 3.1 向数据表 departments 插入数据
insert_sql = 'INSERT INTO departments VALUES (%s, %s);'
# 3.1.1 插入一条数据
# cursor.execute(insert_sql, (1, '人事部'))
# 3.1.2 插入多行数据用 .executemany() 方法，第二个参数是列表
# cursor.executemany(
#     insert_sql,
#     [
#         (2, '运维部'),
#         (3, '开发部'),
#         (4, '测试部'),
#         (5, '财务部'),
#     ])

# 3.2 查询数据，返回数据
select_sql = 'SELECT id, dep_name FROM departments;'
# select_sql = 'SELECT id, dep_name FROM departments WHERE id>=3;'
cursor.execute(select_sql)
# 3.2.1 取出一条数据用 .fetchone() 方法
# result1 = cursor.fetchone()
# print(result1)
# 3.2.2 取出 n条数据用 .fetchmany(n) 方法
# result2 = cursor.fetchmany(3)
# print(result2)
# 3.2.3 取出全部数据用 .fetchall() 方法
result3 = cursor.fetchall()
print(result3)

# 3.3 修改数据
# update_sql = '''UPDATE departments SET dep_name=%s
#                 WHERE dep_name=%s'''
# cursor.execute(update_sql, ('人力资源部', '人事部'))

# 3.4 删除 id 为 5 的数据
delete_sql = 'DELETE FROM departments WHERE id=%s'
r = cursor.execute(delete_sql, (5,))
print('r=', r)

# 4. 执行游标中的SQL 语句并提交
conn.commit()  # 让SQL 语句执行
# 5. 如果操作完毕，关闭游标和数据连接
cursor.close()
conn.close()
